也是10幾年前的古時候,史丹利負責一項Cobol與Cics交易的需求開發,這個案子MD(人天)很多,但急急如律令的急,可以幫公司賺很多錢,當中有一項需求要把客戶在電話中替代核驗身分的密碼儲存下來。
年輕不懂密碼學的史丹利於是和學長找了其他系統儲存登入帳號密碼的函式來Call,驗證密碼時也call相同的函式來確認輸入的密碼是否與儲存在資料庫內加密後的密碼值相同,年輕就是有新鮮肝加班的本錢,很快通過測試並且上線了,有一天負責專案的PM打電話來諮詢,為什麼有一個客戶輸入5678
和5677
都驗證通過啊?
登楞..,都可以聽見自己的心跳聲了,這個bug大概是史丹利人生的陰影之一,史丹利當時也丈二金鋼摸不著頭腦,為什麼兩個數字call密碼函式出的結果是相同的?原來因為輸入的明文長度不夠,導致雜湊後的結果相同,自己也留下了一個經驗,盡量用國際標準的加解密演算法,避免使用自行創造的加密或者雜湊方法。
後來對方PM要求我們要賠償損失,要更正密碼儲存方式,很感謝其他組的顧問和學弟幫忙解bug,Sales也盡力幫忙和客戶喬到兩邊都能接受的處置方式,可愛的學弟(台大數學)還到了圖書館借了幾本密碼學的書一起研究。
於是史丹利第一次和密碼學見面了。
密碼學是資訊安全裡的重要學科之一,只要是不想讓別人瞧見的,又或者想避免數字的誤植、資料的完整性,都有著她登場的戲份,隨著我們開發的電腦系統與網際網路的接觸機會越多,密碼學更是我們工程師學習的重要學科,我們來淺淺的認識她。
她是一門古老的科學,出道超過2000年,為了保護敏感的資訊不讓未授權的第三者竊取,她,就開始了演藝生涯,從西元前5世紀的斯巴達密碼棒、羅馬執政官凱撒設計的位移密碼、15世紀的維吉尼亞密碼、16世紀的蘇格蘭女王瑪麗的營救計畫,二次世界大戰德軍的恩尼格瑪密碼機到現代的DES、3DES、AES及RSA,也許密碼學是為了保護簡單的電報不會外洩,像是Attack at Dawn(拂曉攻擊)這一句話,也許大到保護整個資料庫資料(可以參考[Day05] 資料儲存安全(SQL透明資料加密)或[Day06] 資料儲存安全(SQL備份檔案加密))。
一直以來都把她當成可遠觀的電腦學科之一,但因為這幾年工作的需要,累積了其他幾種加解密演算的使用及組合經驗,重新見到了住在far,far away country的她,一種老朋友重逢的概念。
密碼學的學科通常畫在資工系或是數學系選修課程,如果要從數學下手,又可分為數論密碼學、代數密碼學、訊息理論,哈!打住,我們快點結束這個話題,複習一下密碼學演算法的分類。
我們簡單將經常會使用到的密碼學依照金鑰的屬性分類成:
雜湊演算法需要具備不可逆的特性,對稱金鑰與非對稱金鑰主要差別是在加解密金鑰上的使用,對稱金鑰使用同一把金鑰作加解密,而非對稱金鑰利用數學上兩個巨大質數的乘積與因式分解產生兩把金鑰,一把公開金鑰用作加密,另一把私密金鑰進行解密,實作出解密(加密(明文))=明文的加解密流程。
每一種演算法都有適用的情境
對稱金鑰也就是江湖人稱對稱式加密演算法的她,執行速度快,很適合於加密大量的資料。
非對稱金鑰也就是非對稱式加密演算法,執行速度較慢,但她可以解決加密端和解密端使用同一把金鑰的問題,她將金鑰分成公開金鑰 (public key) 與私密金鑰 (private key),也常被稱為公開金鑰加密法。
因為之前的經驗,有幾項重要使用說明筆記下來。
網際網路的蓬勃發展,密碼學在電腦科學中扮演的角色越來越吃重,在電腦界中的諾貝爾獎圖靈獎Turing Award,通常每年只獎勵一名電腦科學家,從2000年以來的16次(2000-2015年),有關密碼學的電腦科學家獲得了4次獎項:
通常這種會得獎的學科都很難,但卻是我們保護重視資產的強力後盾。
密碼學 wiki
https://zh.wikipedia.org/wiki/%E5%AF%86%E7%A0%81%E5%AD%A6
密碼學主題列表
https://zh.wikipedia.org/wiki/%E5%AF%86%E7%A2%BC%E5%AD%B8%E4%B8%BB%E9%A1%8C%E5%88%97%E8%A1%A8
歐元大樓
2014.12攝於法蘭克福,德國
史丹利後來的故事呢xD
哈!後來的故事很一般也,史丹利還是繼續待同一家公司,我們老闆是那種會和員工站在一起想事情的那種,只希望我們從中學到經驗,倒是自己自責很多。不過學弟解問題很厲害,他用上了字典破解法的方式來回復部分密碼讓災害受到控制。
後來幾年史丹利就從Cobol PG慢慢升到SD、SA、資深SA,再幾年後從主機轉換跑道到開放系統,參與公司研發新的帳務核心系統解決方案,很幸運銷售到很多家銀行,哈!現在是擔任資淺技術顧問一職,白頭髮2根。